package com.le.medium.class2;

import org.junit.Test;

/**
 * 牛牛和羊羊都很喜欢青草。今天他们决定玩青草游戏。
 * 最初有一个装有n份青草的箱子,牛牛和羊羊依次进行,牛牛先开始。
 * 在每个回合中,每个玩家必须吃一些箱子中的青草,所吃的青草份数必须是4的x次幂,比如1,4,16,64等等。
 * 不能在箱子中吃到有效份数青草的玩家落败。假定牛牛和羊羊都是按照最佳方法进行游戏,请输出胜利者的名字。
 */
public class Problem06_Eat {

    public static String winner(int n){
        // 0  1  2  3  4  5
        // 羊 牛 羊  牛 牛 羊
        if (n < 5){
            return (n == 0 || n == 2) ? "羊羊" : "牛牛";
        }
        int base = 1; // 牛牛先吃一份草
        while (base <= n){
            if (winner(n - base).equals("羊羊")){
                return "牛牛";
            }
            if (n / 4 < base){ // 防止溢出
                break;
            }
            base *= 4;
        }
        return "羊羊";
    }

    // 找规律
    public static String winner2(int n){
        if (n % 5 == 0 || n % 5 == 2){
            return "羊羊";
        }else {
            return "牛牛";
        }
    }

    @Test
    public void test(){
        System.out.println("hello");
        for (int i = 0; i < 100; i++) {
            if (winner(i) != winner2(i)){
                System.out.println("no");
                break;
            }
        }
    }
}
